package com.wangshidai.atm.view;

import com.wangshidai.atm.entity.Account;
import com.wangshidai.atm.service.BankService;
import com.wangshidai.atm.util.BankUtil;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * 用户界面
 */
public class BankView {
   static BankService bankService=new BankService(); //存款 取款等多个模块都要创建银行业务类，所以写在最外面，被所有方法都能共享访问

    public static void main(String[] args) {
        while (true){
            System.out.println("---------------------------------");
            System.out.println("---------ATM柜员机------------");
            System.out.println("---------------------------------");
            System.out.println("--------1. 开户--------------------");
            System.out.println("--------2. 存款------------------------");
            System.out.println("---------3. 取款------------------------");
            System.out.println("---------4. 查询余额------------------------");
            System.out.println("---------5.转账------------------------");
            System.out.println("---------6.退出------------------------");
            System.out.println("-请输入你要办理的业务：--------------------------------");
            int option = BankUtil.getInt();
            if (option ==1){//开户    
                openAccount();
            }else if (option==2){
                inMoney();
            }else if (option==3){
               getMoney();
            }else if (option==4){
               
            }else if (option==5){
               
            }else if (option==6){
                System.out.println("欢迎下次办理业务，再见！");
                break;
            }else {
                System.out.println("请输入正确的选项!");
            }

        }
    }


    /**
     * 开户
     */
   public static void openAccount(){
       //自动生成卡号
      // 年月日时分秒+ 1000以内随机数
     //   202202262009+099
       SimpleDateFormat sf=new SimpleDateFormat("yyyyMMddHHmmss");
       Date now=new Date();
       String cardNum = sf.format(now);
       Random r=new Random();
       int num=r.nextInt(1000);
       cardNum=cardNum+num;
       System.out.println(cardNum);
       //判断卡号是否重复    调用银行业务类 判断指定的卡号是否重复并返回
       boolean state = bankService.isexistCardNum(cardNum);  //方法的设计根据实际的业务需求来的
       if (state){
           System.out.println("卡号重复,开户失败！");
           return;
       }
       //从键盘输入密码
       System.out.println("请输入开户密码");
       String password=BankUtil.getString();
       //从键盘输入确认密码
       System.out.println("请再次输入开户密码");
       String twoword=BankUtil.getString();
       //判断2次密码是否一致
       if (!password.equals(twoword)){
           System.out.println("两次不一致，开户失败！");
           return;
       }
       //提示用户从键盘输入真实姓名
       System.out.println("请输入你的真实姓名：");
       String ruleName = BankUtil.getString();
       //初始化金额为0
       double money=0;
       //获取系统当前日期
       String createDate = BankUtil.converDateToString(now);
       //创建一个用户对象，并赋值
       Account account=new Account(cardNum,password,ruleName,money,createDate);
       //调用银行业务类，将该储户保存到List中
    //   boolean s=bankService.openAccount(account);
       if (bankService.openAccount(account)){
           System.out.println("开户成功！！！");
           return;
       }
       System.out.println("开户失败！！！");
   }

    /**
     * 存款
     */
   public static void inMoney(){
        //先登录再存款
        //输入账号和密码，通知银行业务类判断改账号密码对应的账户是否存在返回 该对象
       System.out.println("请输入登录账号:");
       String cardNum = BankUtil.getString();
       System.out.println("请输入登录密码:");
       String password = BankUtil.getString();
       Account account = bankService.login(cardNum, password);
        if (account ==null){
            System.out.println("账号或者密码错误，登录失败！");
            return;
        }
        //登录成功
       System.out.println("请输入你的存款金额：");
       double money = BankUtil.getDouble();
       money =account.getMoney()+money;  // money =原来的钱+现在的钱

       account.setMoney(money);  //修改了该账户的余额       account修改完毕数据后不需要重新返回到List中
       System.out.println("尊敬的"+account.getRuleName()+"，你的卡里余额是:"+money+"");

   }

    /**
     * 取款
     */
   public static void getMoney(){
       System.out.println("请输入登录账号:");
       String cardNum = BankUtil.getString();
       System.out.println("请输入登录密码:");
       String password = BankUtil.getString();
       Account account = bankService.login(cardNum, password);
       if (account ==null){
           System.out.println("账号或者密码错误，登录失败！");
           return;
       }

       //登录成功
       System.out.println("请输入你的取款金额：");
       double money = BankUtil.getDouble();
       //判断余额
       if (account.getMoney()<money){
           System.out.println("尊敬的"+account.getRuleName()+"，你的卡内也不足，取款失败！");
           return;
       }
       money = account.getMoney()-money;  //扣完款后余额
       account.setMoney(money);
       System.out.println("尊敬的"+account.getRuleName()+"，交易成功!");



   }

}














